package cn.tedu.jdbc;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Scanner;

/**
 * @Author Justin Parker
 * @Date 2024/7/30 0030 17:18
 * @Version 1.0
 */
/*
    登录功能[使用预编译SQL方式，防止SQL注入攻击];
    1.先将SQL语句发送给数据库;让数据库理解SQL语句的执行意图，生成执行计划；
     select nickname from userinfo where username=? and password=?;
    2.设置?的值，具体数据以参数的形式传递给数据库；
    3.执行SQL语句；
    4.获取查询结果集；
 */
public class JDBCLogin02 {
    public static void main(String[] args) {

        try (Connection connection = DBUtil.getConnection()){
            //接收用户输入
            Scanner scanner = new Scanner(System.in);
            System.out.println("请输入用户名：");
            String username = scanner.nextLine();
            System.out.println("请输入密码：");
            String password = scanner.nextLine();
            //定义预编译SQL语句
            String sql = "select nickname from userinfo where username=? and password=?";
            PreparedStatement preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1,username);
            preparedStatement.setString(2,password);
            ResultSet resultSet = preparedStatement.executeQuery();
            if (resultSet.next()){
                System.out.println("登录成功！欢迎你："+resultSet.getString("nickname"));
            }else {
                System.out.println("登录失败！用户名或密码错误");
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

}
